Knowledge Build Up

LLM 幻觉

LLM 幻觉排查可以按从输入 到输出的链路分层定位,建议按以下顺序排查(成本由低到高):


1. Prompt 层(最常见,先查这里)

  • 指令是否清晰:有没有模糊词("适当"、"一些"、"相关")让模型自由发挥
  • 是否给了"不知道就编"的暗示:缺少 "如果不确定,请回答不知道" 这类兜底
  • Few-shot 示例质量:示例本身是否准确,是否引导模型走偏
  • 角色设定过强:让模型"扮演专家"反而会让它过度自信编造

2. Context / 上下文层

  • RAG 检索质量
  • 召回的文档是否真的相关(Recall vs Precision)
  • Chunk 切分是否破坏了语义完整性
  • 检索结果是否被正确注入 Prompt(位置、格式)
  • Context 过长:超出有效注意力窗口,模型"忘了"前面的事实(Lost in the middle)
  • 上下文冲突:多个来源信息矛盾,模型选了错的那个
  • Memory 污染:历史对话里的错误结论被带入新对话

3. 模型层

  • 模型能力不匹配:用小模型做复杂推理任务
  • 采样参数
  • temperature 过高 → 输出发散
  • top_p 过宽 → 低概率 token 被采到
  • 知识时效性:问的是训练截止后的事实
  • 领域外问题:模型在该领域本身就缺乏训练数据

4. 任务设计层

  • 任务粒度过大:一次让模型做太多步骤,应该用 CoT 或拆成多步 Agent
  • 缺少外部验证:纯靠模型自身生成 vs 调用工具/数据库查证
  • 没有结构化输出约束:自由文本比 JSON Schema 更容易胡编

5. 工具与数据层(Agent 场景)

  • Tool description 不准确:模型误用工具,把结果"脑补"成另一种含义
  • 工具返回值被截断/格式错乱:模型基于残缺数据继续推理
  • Tool 调用失败时的 fallback:失败后模型是否会"假装查到了"

6. 评估层(如何确认是幻觉而非合理推断)

  • 可复现性:固定 seed/temperature=0 是否仍出错
  • Groundedness 检查:输出的事实是否都能在 context 中找到来源
  • 对比实验:换模型、换 Prompt、换检索结果,定位变量

排查优先级建议

先看 Prompt(改一行字可能就好)
  └─ 再看 RAG/Context(数据问题占大头)
       └─ 再调采样参数
            └─ 最后才考虑换模型 / Fine-tune

需要我针对你具体遇到的幻觉案例做定向分析吗?如果有的话,把 Prompt + 输入 + 期望输出 + 实际输出贴出来,能更精准定位。